package org.springblade.modules.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.modules.admin.dto.ChatGroupDTO;
import org.springblade.modules.admin.dto.RobotPushDTO;
import org.springblade.modules.admin.entity.ChatGroup;
import org.springblade.modules.admin.vo.RobotBuildingElevatorPushVO;
import org.springblade.modules.admin.vo.RobotGroupVO;

import java.util.List;

/**
 * Robot group chat service
 * @author Sharry
 * @since 2023/5/15
 */
public interface IChatGroupService extends BaseService<ChatGroup> {

	/**
	 * 新增群-机器人绑定信息
	 * @param chatGroupDTO 绑定信息参数
	 * @return 是否成功
	 */
	Boolean addOne(ChatGroupDTO chatGroupDTO);

	/**
	 * 群名修改信息
	 * @param chatGroupDTO 修改的群名信息
	 * @return 是否成功
	 */
    Boolean updateGroupNameTopic(ChatGroupDTO chatGroupDTO);

	/**
	 * 入群事件
	 * @param chatGroupDTO 入群事件参数
	 * @return 是否成功
	 */
	Boolean roomJoin(ChatGroupDTO chatGroupDTO);

	/**
	 * 离群事件
	 * @param chatGroupDTO 离群事件参数
	 * @return 是否成功
	 */
	Boolean roomLeave(ChatGroupDTO chatGroupDTO);

	/**
	 * 心跳包
	 * @param chatGroupDTO 心跳包参数
	 * @return 是否成功
	 */
	Boolean heartbeat(ChatGroupDTO chatGroupDTO);

	/**
	 * 根据搜索条件 分页查询
	 * @param robotPushDTO 搜索条件
	 * @param tenantId 租户id
	 * @param page 分页信息
	 * @return 分页列表
	 */
    IPage<RobotGroupVO> relationList(RobotPushDTO robotPushDTO, IPage<RobotGroupVO> page, String tenantId);

	/**
	 * 获取 hover 项目-电梯结构
	 * @param groupId 聊天群id，带@的
	 * @param robotPushDTO 查询条件
	 * @return 项目-电梯 hover 列表
	 */
	List<RobotBuildingElevatorPushVO> getBeVoList(String groupId, RobotPushDTO robotPushDTO);

	/**
	 * 获取服务电话
	 * @param groupId 群id
	 * @return 服务电话
	 */
	String getServiceTelephone(String groupId);
}
